import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
import axios from 'axios' // 改为创建 axios 实例而非全局修改
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import { ElMessage, ElMessageBox } from 'element-plus'

// 创建独立的 axios 实例（非全局）
const http = axios.create({
  baseURL: import.meta.env.DEV ? '' : '/'
})

// 请求拦截器（保持原逻辑）
http.interceptors.request.use(config => {
  config.headers['Cache-Control'] = 'no-cache'
  return config
})

// 异步加载生产环境配置
const initApp = async () => {
  // 生产环境加载外部配置
  if (!import.meta.env.DEV) {
    try {
      const response = await fetch('/config.json')
      const { baseURL } = await response.json()
      http.defaults.baseURL = baseURL // 动态更新生产环境地址
    } catch (error) {
      console.error('加载外部配置失败，使用默认 baseURL:', error)
    }
  }

  const app = createApp(App)

  app.config.globalProperties.$http = http
  app.use(createPinia())
  app.use(router)
  app.use(ElementPlus)

  // Element Plus调整
  // 注册 Element Plus 图标
  for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component)
  }
  // 全局挂载message
  app.config.globalProperties.$message = ElMessage
  app.config.globalProperties.$msgbox = ElMessageBox

  app.mount('#app')
}

// 启动应用
initApp()
